﻿var K_Operacion = { Insertar: 1, Editar: 2, Ver: 3 };
var K_ResultadoAjax = { Exito: 1, Error: 0 };
var K_MensajeSelect = { Todos: 'Todos', Seleccione: 'Seleccione' };

$(function () {
    

    $("#mvNuevo").dialog({
        modal: true,
        autoOpen: false,
        width: 500,
        height: 380,
        title: "Nuevo Registro de Opción",
        buttons: {
            "Grabar": insertar,
            "Cerrar": closePopup
        }
    });
    
    $("#niveles").on('click', function () {

    }).buttonset();

    $("#btnBuscar").on("click", function () {
        buscar();
    }).button();
    $("#btnLimpiar").on("click", function () {
        $("#txtSistemaFiltro").val("");
        $("#hidCodigoSistemaFiltro").val("");
        $("#ddlModuloFiltro").val(0);
        $("#ddlPerfilFiltro").val(0);
        $("#ddlSituacionFiltro").val(0);
        buscar();
    }).button();

    $("#btnNuevo").on("click", function () {
        resetPopup();
        $("#hidOpcion").val(K_Operacion.Insertar);
        $("#mvNuevo").dialog('option', 'title', 'Registrar información de Opción.');
        $("#mvNuevo").dialog("open");
    }).button();

    $("#btnEditar").on("click", function () {
        var filas = jQuery("#grid").jqGrid('getGridParam', 'selarrrow');
        if (filas != null) {
            if (filas.length > 0) {
                if (filas.length == 1) {
                    var codigoSel = jQuery("#grid").jqGrid('getRowData', filas[0]).CodigoOpcion;
                    edit(codigoSel);
                } else {
                    alertify.error("Para modificar seleccione sólo un elemento de la lista.");
                }
            } else {
                alertify.error("Seleccione un elemento para modificar.");
            }
        } else {
            alertify.error("Seleccione un elemento para modificar.");
        }
    }).button();

    $("#btnEliminar").on("click", function () {
        var item = new Array();

        var filas = jQuery("#grid").jqGrid('getGridParam', 'selarrrow');
        if (filas.length > 0) {
            alertify.confirm("Esta seguro de eliminar los registros seleccionados?", function (e) {
                if (e) {
                    for (var i = 0; i < filas.length; i++) {
                        var codigoSel = (jQuery("#grid").jqGrid('getRowData', filas[i]).CodigoOpcion);
                        item[i] = codigoSel;
                    }
                    eliminar(item);
                } else {
                    alertify.error("Operación eliminación cancelada.");
                }
            });
        } else {
            alertify.error("Seleccione un elemento para eliminar.");
        }
        return false;
    }).button();

    $("#ddlSistemaFiltro").on("change", function () {
        var codSistema = $("#ddlSistemaFiltro").val();
        listarModuloXSistema("ddlModuloFiltro", K_MensajeSelect.Todos, codSistema);
    });

    $("#ddlModuloFiltro").on("change", function () {
        var codModulo = $("#ddlModuloFiltro").val();
        listarPerfilXModulo("ddlPerfilFiltro", K_MensajeSelect.Todos, codModulo);
    });

    $("#ddlSistema").on("change", function () {
        var codSistema = $("#ddlSistema").val();
        listarModuloXSistema("ddlModulo", K_MensajeSelect.Seleccione, codSistema);
    });

    $("#ddlModulo").on("change", function () {
        var codModulo = $("#ddlModulo").val();
        listarPerfilXModulo("ddlPerfil", K_MensajeSelect.Seleccione, codModulo);
    });

    $("#nivel2").on("click", function () {
        $("#nivel1").removeAttr("checked");
        $("#nivel2").prop("checked", true);
        if ($("#ddlPerfil").val() != 0) {
            $("#txtNombrePadre").removeAttr("disabled");
            $("#txtNombrePadre").attr("class", "requerido");
        }
    });
    $("#nivel1").on("click", function () {
        $("#nivel2").removeAttr("checked");
        $("#nivel1").prop("checked", true);
        $("#txtNombrePadre").attr("disabled","disabled");
        $("#txtNombrePadre").removeAttr("class");
    });

    $("#ddlPerfil").on("change", function () {
        //alert($("input:radio[name=nivel]:checked").val());
        if ($("#ddlPerfil").val() != 0 && $("input:radio[name=nivel]:checked").val() == 2) {
            $("#txtNombrePadre").removeAttr("disabled");
            $("#txtNombrePadre").attr("class", "requerido");
        } else {
            $("#txtNombrePadre").attr("disabled", "disabled");
            $("#txtNombrePadre").removeAttr("class");
        }
    });

    //listarSistema("ddlSistemaFiltro", K_MensajeSelect.Seleccione, 0);
    initSistemaAutoCompletar("txtSistemaFiltro", "hidCodigoSistemaFiltro","ddlModuloFiltro");
    listarModuloXSistema("ddlModuloFiltro", K_MensajeSelect.Todos, 0);
    listarPerfilXModulo("ddlPerfilFiltro", K_MensajeSelect.Todos, 0);

    initOpcionXPerfilAutoCompletar("txtNombrePadre", "hidCodigoPadre", "ddlPerfil");

    buscar();
});


var verDeta = function (param) {
    $("#txtCodigo").val(param);
    $("#mvNuevo").dialog("open");
    $("#mvNuevo").dialog('option', 'title', 'Ver información de Opción.');
};

var buscar = function () {
    validarSesion();
    var opcion = {
        CodigoSistema: $("#hidCodigoSistemaFiltro").val() == "" ? 0 : $("#hidCodigoSistemaFiltro").val(),
        CodigoModulo: $("#ddlModuloFiltro").val(),
        CodigoPerfil: $("#ddlPerfilFiltro").val(),
        anulado: $("#ddlSituacionFiltro").val()
    };

    $("#grid").jqGrid("clearGridData", true);
    $("#grid").jqGrid('setGridParam', { url: 'ListarOpcionJGrid', datatype: 'json', mtype: 'POST', postData: opcion }).trigger('reloadGrid');

    jQuery("#grid").jqGrid({
        url: 'ListarOpcionJGrid',
        datatype: 'json',
        postData: opcion,
        mtype: 'POST',
        colNames: ['Codigo', 'Nombre','Descripcion','Ruta','Padre', 'Situacion', 'Accion'],
        colModel: [
            { name: 'CodigoOpcion', index: 'CodigoOpcion', width: 50, align: 'left' },
            { name: 'Nombre', index: 'Nombre', width: 150, align: 'center', },
            { name: 'Descripcion', index: 'Descripcion', width: 150, align: 'center', },
            { name: 'Ruta', index: 'Ruta', width: 150, align: 'center', },
            { name: 'Padre', index: 'Padre', width: 150, align: 'center', },
            { name: 'Situacion', index: "Situacion", width: 70, align: 'center' },
            { name: 'act', index: 'act', width: 75, sortable: false }],
        rowNum: 20,
        pager: jQuery('#pager'),
        rowList: [20, 30, 50],
        sortname: 'Codigo',
        viewrecords: true,
        sortorder: 'asc',
        multiselect: true,
        multiSort: true,
        width: '900',
        height: '200',
        caption: 'Opciones Registrados',
        ondblClickRow: function (id) { verDeta(id); },
        gridComplete: function () {
            var ids = jQuery("#grid").jqGrid('getDataIDs');
            for (var i = 0; i < ids.length; i++) {
                var cl = ids[i];
                xview = "<img src='../Imagen/icono/search.png' onclick=\"ver('" + cl + "');\"  />&nbsp;";
                xedit = "<img src='../Imagen/icono/edit.png' onclick=\"edit('" + cl + "');\"  />&nbsp;";
                xdel = "<img src='../Imagen/icono/del.png' onclick=\"del('" + cl + "');\"  /> ";
                jQuery("#grid").jqGrid('setRowData', ids[i], { act: xview + xedit + xdel });
            }
        }

    });
}

var insertar = function () {
    if (ValidarRequeridos()) {
        var opcion = {
            Codigo: $("#txtCodigo").val(),
            Nivel: $("input:radio[name=nivel]:checked").val(),
            Nombre: $("#txtNombre").val(),
            Ruta: $("#txtRuta").val(),
            Descripcion: $("#txtDescripcion").val(),
            CodigoPerfil: $("#ddlPerfil").val(),
            CodigoPadre: $("#hidCodigoPadre").val(),
            Anulado: $("#ddlSituacion").val() == 'A' ? false : true
        };
        if ($("#hidOpcion").val() == K_Operacion.Insertar) {
            ///insertar
            $.ajax({
                url: 'Insertar',
                data: opcion,
                type: 'POST',
                beforeSend: function () { },
                success: function (response) {
                    var dato = response;
                    validarRedirect(dato);
                    if (dato.result == K_ResultadoAjax.Exito) {
                        alertify.success(dato.message);
                    } else {
                        alertify.error(dato.message);
                    }
                }
            });
        } else if ($("#hidOpcion").val() == K_Operacion.Editar) {
            ///actualizacion
            $.ajax({
                url: 'Actualizar',
                data: opcion,
                type: 'POST',
                success: function (response) {
                    var dato = response;
                    validarRedirect(dato);
                    if (dato.result == K_ResultadoAjax.Exito) {
                        alertify.success(dato.message);
                    } else {
                        alertify.success(dato.message);
                    }
                }
            });
        }
        $("#mvNuevo").dialog("close");
        buscar();
    }
};

var eliminar = function (item) {
    $.each(item, function (index, i) {
        $.ajax({
            data: { CodigoOpcion: i },
            url: 'Eliminar',
            type: 'POST',
            success: function (response) {
                var dato = response;
                validarRedirect(dato);
                if (dato.result == K_ResultadoAjax.Exito) {
                    alertify.success(dato.message);
                } else {
                    alertify.success(dato.message);
                }
            }
        });
    });
    buscar();
    return false;
}

function resetPopup() {
    msgOkB("aviso", "");
    limpiarRequerido();

    $("#txtCodigo").val("");
    $("#txtNombre").val("");
    $("#txtDescripcion").val("");
    $("#txtRuta").val("");
    $("#txtNombrePadre").val("");
    $("#hidCodigoPadre").val("");
    listarSistema("ddlSistema", K_MensajeSelect.Seleccione, 0);
    listarModuloXSistema("ddlModulo", K_MensajeSelect.Seleccione, 0);
    listarPerfilXModulo("ddlPerfil", K_MensajeSelect.Seleccione, 0);

    $("#nivel1").attr("checked", true);
    $("input:radio[name=nivel]").removeAttr('disabled');
    $("#txtNombrePadre").prop("disabled",true);
    $("#txtNombre").removeAttr("disabled");
    $("#txtRuta").removeAttr("disabled");
    $("#txtDescripcion").removeAttr("disabled");
    $("#ddlSistema").removeAttr("disabled");
    $("#ddlModulo").removeAttr("disabled");
    $("#ddlPerfil").removeAttr("disabled");
    $("#ddlSituacion").removeAttr("disabled");
    $("#lblNivel1").removeAttr("disabled");
    $("#lblNivel2").removeAttr("disabled");
}
var closePopup = function () {
    $("#mvNuevo").dialog("close");
};


function edit(id) {
    $("#hidOpcion").val(K_Operacion.Editar);
    $("#mvNuevo").dialog("open");
    $("#mvNuevo").dialog('option', 'title', 'Actualizar información de Opción.');
    resetPopup();
    $.ajax({
        data: { CodigoOpcion: id },
        url: 'ObtenerOpcion',
        type: 'POST',
        success: function (response) {
            var dato = response;
            validarRedirect(dato);
            var Opcion = dato.data.Data;
            if (dato.result = K_ResultadoAjax.Exito) {
                $("#txtCodigo").val(Opcion.Codigo);
                var nivel = 0;
                if (Opcion.Nivel == 1) {
                    nivel = Opcion.Nivel;
                    $("#lblNivel1").attr("aria-pressed", true);
                    $("#lblNivel1").attr("class", "ui-button ui-widget ui-state-default ui-button-text-only ui-corner-left ui-state-active");
                    $("#lblNivel2").attr("aria-pressed", false);
                    $("#lblNivel2").attr("class", "ui-button ui-widget ui-state-default ui-button-text-only ui-corner-right");
                } else {
                    nivel = 2;
                    $("#lblNivel2").attr("aria-pressed", true);
                    $("#lblNivel2").attr("class", "ui-button ui-widget ui-state-default ui-button-text-only ui-corner-right ui-state-active");
                    $("#lblNivel1").attr("aria-pressed", false);
                    $("#lblNivel1").attr("class", "ui-button ui-widget ui-state-default ui-button-text-only ui-corner-left");
                }

                Nivel: $("input:radio[name=nivel]").filter("[Value='" + nivel + "']").attr("checked","checked");
                
                $("#hidCodigoPadre").val(Opcion.CodigoPadre);
                $("#txtNombrePadre").val(Opcion.DescripcionPadre);
                $("#txtNombre").val(Opcion.Nombre);
                $("#txtRuta").val(Opcion.Ruta);
                $("#txtDescripcion").val(Opcion.Descripcion),
                listarSistema("ddlSistema", K_MensajeSelect.Seleccione, Opcion.CodigoSistema);
                listarModuloXSistema("ddlModulo", K_MensajeSelect.Seleccione, Opcion.CodigoSistema,Opcion.CodigoModulo);
                listarPerfilXModulo("ddlPerfil", K_MensajeSelect.Seleccione,Opcion.CodigoModulo, Opcion.CodigoPerfil);
                
                $("#ddlSituacion").val(Opcion.Anulado == false ? 'A' : 'I');
            }
        }
    });
}

function del(id) {
    alertify.confirm("Esta seguro de eliminar el registro?", function (e) {
        if (e) {
            var item = Array();
            item[0] = id;
            eliminar(item);
        } else {
            alertify.error("Operación eliminación cancelada.");
        }
    });
    return false;
}

function ver(id) {

    $("#hidOpcion").val(K_Operacion.Ver);
    $("#mvNuevo").dialog("open");
    $("#mvNuevo").dialog('option', 'title', 'Información de Opcion');
    resetPopup();
    $.ajax({
        data: { CodigoOpcion: id },
        url: 'ObtenerOpcion',
        type: 'POST',
        success: function (response) {
            var dato = response;
            validarRedirect(dato);
            var Opcion = dato.data.Data;
            if (dato.result = K_ResultadoAjax.Exito) {
                $("#txtCodigo").val(Opcion.Codigo);
                var nivel = 0;
                if (Opcion.Nivel == 1) {
                    nivel = Opcion.Nivel;
                    $("#txtNombrePadre").attr("disabled", "disabled");
                    $("#txtNombrePadre").removeAttr("class");
                    $("#lblNivel1").attr("aria-pressed", true);
                    $("#lblNivel1").attr("class", "ui-button ui-widget ui-state-default ui-button-text-only ui-corner-left ui-state-active");
                    $("#lblNivel2").attr("aria-pressed", false);
                    $("#lblNivel2").attr("class", "ui-button ui-widget ui-state-default ui-button-text-only ui-corner-right");
                } else {
                    nivel = 2;
                    $("#txtNombrePadre").removeAttr("disabled");
                    $("#txtNombrePadre").attr("class", "requerido");
                    $("#lblNivel2").attr("aria-pressed", true);
                    $("#lblNivel2").attr("class", "ui-button ui-widget ui-state-default ui-button-text-only ui-corner-right ui-state-active");
                    $("#lblNivel1").attr("aria-pressed", false);
                    $("#lblNivel1").attr("class", "ui-button ui-widget ui-state-default ui-button-text-only ui-corner-left");
                }

                Nivel: $("input:radio[name=nivel]").filter("[Value='" + nivel + "']").attr("checked","checked");
                
                $("#hidCodigoPadre").val(Opcion.CodigoPadre);
                $("#txtNombrePadre").val(Opcion.DescripcionPadre);
                $("#txtNombre").val(Opcion.Nombre);
                $("#txtRuta").val(Opcion.Ruta);
                $("#txtDescripcion").val(Opcion.Descripcion),
                listarSistema("ddlSistema", K_MensajeSelect.Seleccione, Opcion.CodigoSistema);
                listarModuloXSistema("ddlModulo", K_MensajeSelect.Seleccione, Opcion.CodigoSistema,Opcion.CodigoModulo);
                listarPerfilXModulo("ddlPerfil", K_MensajeSelect.Seleccione,Opcion.CodigoModulo, Opcion.CodigoPerfil);
                
                $("#hidCodigoPadre").val(Opcion.CodigoPadre);
                $("#ddlSituacion").val(Opcion.Anulado == false ? 'A' : 'I');

                $("input:radio[name=nivel]").attr('disabled', 'disabled');
                $("#lblNivel1").attr("disabled", "disabled");
                $("#lblNivel2").attr("disabled", "disabled");
                $("#txtNombrePadre").attr("disabled", "disabled");
                $("#txtNombre").attr("disabled", "disabled");
                $("#txtRuta").attr("disabled", "disabled");
                $("#txtDescripcion").attr("disabled", "disabled");
                $("#ddlSistema").prop("disabled", "disabled");
                $("#ddlModulo").prop("disabled", "disabled");
                $("#ddlPerfil").prop("disabled", "disabled");
                $("#ddlSituacion").prop("disabled", "disabled");
            }
        }
    });

    return false;
}